package com.fjl.list.leetcode83;

import com.fjl.list.ListNode;

/**
 * @Description
 * @Author: 01195
 * @Date: 2025/2/18 9:54
 */
public class DeleteDuplicatesNode83 {
    public static void main(String[] args) {

    }

    // 给定一个已排序的链表的头 head ， 删除所有重复的元素，使每个元素只出现一次 。返回 已排序的链表 。
    public ListNode deleteDuplicates1(ListNode head) {
        ListNode dummy = new ListNode(101);
        ListNode p = dummy, q = head;
        while (q != null) {
            if (q.next != null && q.val == q.next.val) {
                // 过滤掉重复的节点
                while (q.next != null && q.val == q.next.val) {
                    q = q.next;
                }
                // 82题q = q.next;83 和 82唯一的差别就是少了这一行代码
            } else {
                p.next = q;
                p = p.next;
                // 将原链表和新链表断开
                ListNode temp = q.next;
                q.next = null;
                q = temp;
            }
        }
        return dummy.next;
    }
}
